home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tempdemo.lha / ProgrammersInfo / DSKEL-FR.c < prev    next >
C/C++ Source or Header  |  1994-05-22  |  4KB  |  170 lines

  1. //                           SKEL-FAKE v1.0
  2.  
  3. //                           (FAKE REPORTER)
  4.  
  5. //**********************
  6. //*****  Includes  *****
  7. //**********************
  8.  
  9. #include <proto/all.h>
  10. #include <stdio.h>
  11.  
  12. #include <string.h>
  13. #include <tempest/headers.h>
  14.  
  15. //********************************
  16. //*****  Structures/Defines  *****
  17. //********************************
  18.  
  19. struct MyMessage
  20.  {
  21.   struct Message Msg;
  22.   struct User User;
  23.   char text[255];
  24.   char text1[255];
  25.   int car,Value,Data;
  26.   long LongValue;
  27.   int  IntValue;
  28.  };
  29.  
  30. struct User User;
  31. struct MsgPort *MyPort = NULL;
  32. struct MyMessage *msg;
  33.  
  34. #define DROP if(EXIT_FLAG) CloseStuff();
  35.  
  36. void CloseStuff();
  37. void pl(char outstring[]);
  38. void input(char mstring[],int len);
  39. int  DOORIO();
  40.  
  41. int  EXIT_FLAG, DOOR_DATA, DOOR_CAR, DOOR_VALUE, DOOR_VALUE1 = 0,first = 0;
  42. char DOOR_MSG [255],DOOR_MSG1[255],MyName[255],st[100];
  43.  
  44. //******************
  45. //*****  Main  *****
  46. //******************
  47.  
  48. void main(int argc,char *argv[])
  49. {
  50.  char string1[255],string2[255];
  51.  register int fd;
  52.  if(!DoorStart(argv[1])) { PutStr("[os2] Tempest Door\n"); exit(0); }
  53.  pl("\f[DSKEL-FR v1.2Fake Reporter     By The SkeletoN [01-01-93]\r\n");
  54.  pl("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
  55.  
  56.  CONTINUE:
  57.  
  58.  pl("[Q = QuitEnter Filename of Fake: ");
  59.  input(string1,12);
  60.  DROP;
  61.  if(string1[0] == ' ')
  62.     CloseStuff();
  63.  if(string1[1] == NULL)
  64.     if((string1[0] == 'q') || (string1[0] == 'Q'))
  65.         CloseStuff();
  66.  strcpy(string2,"FAKES:");
  67.  strcat(string2,string1);
  68.  fd=Open(string2,MODE_NEWFILE);
  69.  Close(fd);
  70.  goto CONTINUE;
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. //*************************
  83. //*****  Close Stuff  *****
  84. //*************************
  85.  
  86. void CloseStuff()
  87. { DOOR_DATA=99; strcpy(DOOR_MSG,'\0'); DOORIO();
  88.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  89.  if(MyPort) DeletePort(MyPort);
  90.  exit(0); }
  91.  
  92. //************************
  93. //*****  Door Start  *****
  94. //************************
  95.  
  96. DoorStart(char node[])
  97. {
  98.  struct MsgPort *HisPort;
  99.  EXIT_FLAG = 0;
  100.  strcpy(st,node);
  101.  strcat(st,":TEMPEST_DOOR");
  102.  HisPort = FindPort(st);
  103.  if(HisPort==NULL) return (FALSE);
  104.  strcpy(MyName,node);
  105.  strcat(MyName,":DOOR_PORT");
  106.  MyPort = CreatePort(MyName,0L);
  107.  if(MyPort==NULL)
  108.   {
  109.    PutStr("Cant open port");
  110.    return(int)FALSE;
  111.   }
  112.  DOORIO();
  113.  return (int)TRUE;
  114. }
  115.  
  116. //********************
  117. //*****  DoorIO  *****
  118. //********************
  119.  
  120. int DOORIO()
  121. {
  122.  struct MsgPort *HisPort;
  123.  struct MyMessage message;
  124.  int UPDATE;
  125.  if(EXIT_FLAG) return 0;
  126.  UPDATE=0;
  127.  HisPort = FindPort(st);
  128.  if(HisPort!=NULL)
  129.   {
  130.    message.Msg.mn_Node.ln_Type = NT_MESSAGE;
  131.    message.Msg.mn_Length = sizeof(message);
  132.    message.Msg.mn_ReplyPort = MyPort;
  133.    if(first)CopyMem(&User,&message.User,sizeof(struct User));
  134.    message.car   = 0;
  135.    message.Data  = DOOR_DATA;
  136.    message.Value = DOOR_VALUE;
  137.    message.IntValue = DOOR_VALUE1;
  138.    strcpy(message.text,DOOR_MSG);
  139.    strcpy(message.text1,DOOR_MSG1);
  140.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&message);
  141.    Wait(1 << MyPort->mp_SigBit);
  142.    GetMsg(MyPort);
  143.    DOOR_DATA  = message.Data;
  144.    DOOR_VALUE = message.Value;
  145.    DOOR_VALUE1 = message.IntValue;
  146.    strcpy(DOOR_MSG,message.text);
  147.    strcpy(DOOR_MSG1,message.text1);
  148.    CopyMem(&message.User,&User,sizeof(struct User));
  149.    first=1;
  150.    UPDATE=0;
  151.    if(message.car) EXIT_FLAG=1;
  152.   }
  153.  return 0;
  154. }
  155.  
  156. //*******************
  157. //*****  Input  *****
  158. //*******************
  159.  
  160. void input(char mstring[],int len)
  161. { DOOR_DATA=40; DOOR_VALUE=len; strcpy(DOOR_MSG,mstring); DOORIO();
  162.  strcpy(mstring,DOOR_MSG); strcpy(DOOR_MSG,'\0'); strcpy(DOOR_MSG1,'\0'); }
  163.  
  164. //*****************************
  165. //*****  PL (Print Line)  *****
  166. //*****************************
  167.  
  168. void pl(char outstring[])
  169. { DOOR_DATA=1; strcpy(DOOR_MSG,outstring); DOORIO(); }
  170.